###############################################################################
###############################################################################
#
# $Id: MaCI-interfaces.Makefile,v 1.44 2009-11-09 08:56:19 morsko Exp $
#
###############################################################################
###############################################################################
###############################################################################

# Required from includer:
# GDIR - pointing to project root. ('utils' are searched here)
# MACIPATH - Pointing to root of MaCI

###############################################################################
# Define external Paths
###############################################################################
MACI_BUS_PATH=$(MACIPATH)/bus
MACI_DRIVER_PATH=$(MACIPATH)/drivers
MACI_INTERFACE_PATH=$(MACIPATH)/interfaces


###############################################################################
# Define external module paths
###############################################################################
MACI_EXT_UTILS_PATH=$(GDIR)/utils
MACI_EXT_JPEGDECODER_PATH=$(GDIR)/ImageUtils/JPEGDecoder
MACI_EXT_JPEGENCODER_PATH=$(GDIR)/ImageUtils/JPEGEncoder
MACI_EXT_PNGDECODER_PATH=$(GDIR)/ImageUtils/PNGDecoder
MACI_EXT_PNGENCODER_PATH=$(GDIR)/ImageUtils/PNGEncoder
MACI_EXT_LNMLIB_PATH=$(GDIR)/LnMlib/src
MACI_EXT_LIBPNG12=`libpng-config --cflags`
MACI_EXT_LIBCONVERSIONS_PATH=$(GDIR)/ImageUtils/conversions


###############################################################################
# MaCI Core required external sources - Currently GIM/utils is
# required.
###############################################################################
MACI_EXT_SRC_CPP:=$(MACI_EXT_UTILS_PATH)/binbag.cpp
MACI_EXT_SRC_C:=$(MACI_EXT_UTILS_PATH)/ownutils.c \
$(MACI_EXT_UTILS_PATH)/owdebug.c


###############################################################################
# MaCI Base - Required for all MaCI applications. Includes MaCI core,
# MaCICtrl and Alarm interfaces.
###############################################################################
MACI_BASE_SRC_CPP:=$(MACI_INTERFACE_PATH)/MaCI.cpp \
$(MACI_INTERFACE_PATH)/MaCIError.cpp \
$(MACI_INTERFACE_PATH)/MaCICtrl/MaCICtrlData.cpp \
$(MACI_INTERFACE_PATH)/MaCICtrl/MaCICtrlServer.cpp \
$(MACI_INTERFACE_PATH)/MaCICtrl/MaCICtrlClient.cpp \
$(MACI_INTERFACE_PATH)/Alarm/AlarmData.cpp \
$(MACI_INTERFACE_PATH)/Alarm/AlarmServer.cpp

###############################################################################
### Interfaces
# Alarm
###############################################################################
#MACI_INTERFACE_ALARM_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Alarm/AlarmData.cpp # Merged to Core!
#MACI_INTERFACE_ALARMSERVER_CPP:=$(MACI_INTERFACE_PATH)/Alarm/AlarmServer.cpp # Merged to Core!
MACI_INTERFACE_ALARMCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Alarm/AlarmClient.cpp


###############################################################################
# Dummy
MACI_INTERFACE_DUMMY_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Dummy/DummyData.cpp
MACI_INTERFACE_DUMMYSERVER_CPP:=$(MACI_INTERFACE_PATH)/Dummy/DummyServer.cpp
MACI_INTERFACE_DUMMYCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Dummy/DummyClient.cpp
MACI_INTERFACE_DUMMY_EXT_CPP:=
MACI_INTERFACE_DUMMY_EXT_INCLUDE:=
MACI_INTERFACE_DUMMY_EXT_LIBS:=


###############################################################################
# Ranging
MACI_INTERFACE_RANGING_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Ranging/RangingData.cpp
MACI_INTERFACE_RANGINGSERVER_CPP:=$(MACI_INTERFACE_PATH)/Ranging/RangingServer.cpp
MACI_INTERFACE_RANGINGCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Ranging/RangingClient.cpp
MACI_INTERFACE_RANGING_EXT_CPP:=
MACI_INTERFACE_RANGING_EXT_INCLUDE:=
MACI_INTERFACE_RANGING_EXT_LIBS:=


###############################################################################
# SpeedCtrl
MACI_INTERFACE_SPEEDCTRL_COMMON_CPP:=$(MACI_INTERFACE_PATH)/SpeedCtrl/SpeedCtrlData.cpp
MACI_INTERFACE_SPEEDCTRLSERVER_CPP:=$(MACI_INTERFACE_PATH)/SpeedCtrl/SpeedCtrlServer.cpp
MACI_INTERFACE_SPEEDCTRLCLIENT_CPP:=$(MACI_INTERFACE_PATH)/SpeedCtrl/SpeedCtrlClient.cpp
MACI_INTERFACE_SPEEDCTRL_EXT_CPP:=
MACI_INTERFACE_SPEEDCTRL_EXT_INCLUDE:=
MACI_INTERFACE_SPEEDCTRL_EXT_LIBS:=


###############################################################################
# Position
MACI_INTERFACE_POSITION_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Position/PositionData.cpp
MACI_INTERFACE_POSITIONSERVER_CPP:=$(MACI_INTERFACE_PATH)/Position/PositionServer.cpp
MACI_INTERFACE_POSITIONCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Position/PositionClient.cpp
MACI_INTERFACE_POSITION_EXT_CPP:=
MACI_INTERFACE_POSITION_EXT_INCLUDE:=
MACI_INTERFACE_POSITION_EXT_LIBS:=


###############################################################################
# Image (NOTE: Embedded JPEG support!)
MACI_INTERFACE_IMAGE_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Image/ImageData.cpp \
$(MACI_INTERFACE_PATH)/Image/ImageContainer.cpp \
$(MACI_INTERFACE_PATH)/Image/ImageConversion.cpp
MACI_INTERFACE_IMAGESERVER_CPP:=$(MACI_INTERFACE_PATH)/Image/ImageServer.cpp
MACI_INTERFACE_IMAGECLIENT_CPP:=$(MACI_INTERFACE_PATH)/Image/ImageClient.cpp
MACI_INTERFACE_IMAGE_EXT_CPP:=$(MACI_EXT_JPEGENCODER_PATH)/JPEGEncoder.cpp \
$(MACI_EXT_JPEGDECODER_PATH)/JPEGDecoder.cpp \
$(MACI_EXT_PNGDECODER_PATH)/PNGDecoder.cpp \
$(MACI_EXT_PNGENCODER_PATH)/PNGEncoder.cpp 
MACI_INTERFACE_IMAGE_EXT_C=$(MACI_EXT_LIBCONVERSIONS_PATH)/YUYV_to_RGB.c
MACI_INTERFACE_IMAGE_EXT_INCLUDE:=-I$(MACI_EXT_JPEGENCODER_PATH) \
-I$(MACI_EXT_JPEGDECODER_PATH) \
-I$(MACI_EXT_PNGDECODER_PATH) \
-I$(MACI_EXT_PNGENCODER_PATH) \
-I$(MACI_EXT_LIBPNG12) \
-I$(MACI_EXT_LIBCONVERSIONS_PATH)
MACI_INTERFACE_IMAGE_EXT_LIBS:=-ljpeg `libpng-config --libs`


###############################################################################
# IO
MACI_INTERFACE_IO_COMMON_CPP:=$(MACI_INTERFACE_PATH)/IO/IOData.cpp
MACI_INTERFACE_IOSERVER_CPP:=$(MACI_INTERFACE_PATH)/IO/IOServer.cpp
MACI_INTERFACE_IOCLIENT_CPP:=$(MACI_INTERFACE_PATH)/IO/IOClient.cpp
MACI_INTERFACE_IO_EXT_CPP:=
MACI_INTERFACE_IO_EXT_INCLUDE:=
MACI_INTERFACE_IO_EXT_LIBS:=


###############################################################################
# CoordinateDrive
MACI_INTERFACE_COORDINATEDRIVE_COMMON_CPP:=$(MACI_INTERFACE_PATH)/CoordinateDrive/CoordinateDriveData.cpp
MACI_INTERFACE_COORDINATEDRIVESERVER_CPP:=$(MACI_INTERFACE_PATH)/CoordinateDrive/CoordinateDriveServer.cpp
MACI_INTERFACE_COORDINATEDRIVECLIENT_CPP:=$(MACI_INTERFACE_PATH)/CoordinateDrive/CoordinateDriveClient.cpp
MACI_INTERFACE_COORDINATEDRIVE_EXT_CPP:=
MACI_INTERFACE_COORDINATEDRIVE_EXT_INCLUDE:=
MACI_INTERFACE_COORDINATEDRIVE_EXT_LIBS:=


###############################################################################
# JointGroupVtrl
MACI_INTERFACE_JOINTGROUPCTRL_COMMON_CPP:=$(MACI_INTERFACE_PATH)/JointGroupCtrl/JointGroupCtrlData.cpp
MACI_INTERFACE_JOINTGROUPCTRLSERVER_CPP:=$(MACI_INTERFACE_PATH)/JointGroupCtrl/JointGroupCtrlServer.cpp
MACI_INTERFACE_JOINTGROUPCTRLCLIENT_CPP:=$(MACI_INTERFACE_PATH)/JointGroupCtrl/JointGroupCtrlClient.cpp
MACI_INTERFACE_JOINTGROUPCTRL_EXT_CPP:=
MACI_INTERFACE_JOINTGROUPCTRL_EXT_INCLUDE:=
MACI_INTERFACE_JOINTGROUPCTRL_EXT_LIBS:=


###############################################################################
# Map
MACI_INTERFACE_MAP_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Map/MapData.cpp
MACI_INTERFACE_MAPSERVER_CPP:=$(MACI_INTERFACE_PATH)/Map/MapServer.cpp
MACI_INTERFACE_MAPCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Map/MapClient.cpp
MACI_INTERFACE_MAP_EXT_CPP:=$(MACI_EXT_PNGDECODER_PATH)/PNGDecoder.cpp \
														$(MACI_EXT_PNGENCODER_PATH)/PNGEncoder.cpp 
MACI_INTERFACE_MAP_EXT_C:=
MACI_INTERFACE_MAP_EXT_INCLUDE:=-I$(MACI_EXT_PNGDECODER_PATH) -I$(MACI_EXT_PNGENCODER_PATH)
MACI_INTERFACE_MAP_EXT_LIBS:=`libpng-config --libs`

###############################################################################
# Behaviour
MACI_INTERFACE_BEHAVIOUR_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Behaviour/BehaviourData.cpp
MACI_INTERFACE_BEHAVIOURSERVER_CPP:=$(MACI_INTERFACE_PATH)/Behaviour/BehaviourServer.cpp
MACI_INTERFACE_BEHAVIOURCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Behaviour/BehaviourClient.cpp
MACI_INTERFACE_BEHAVIOUR_EXT_CPP:=
MACI_INTERFACE_BEHAVIOUR_EXT_INCLUDE:=
MACI_INTERFACE_BEHAVIOUR_EXT_LIBS:=


###############################################################################
# Text
MACI_INTERFACE_TEXT_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Text/TextData.cpp
MACI_INTERFACE_TEXTSERVER_CPP:=$(MACI_INTERFACE_PATH)/Text/TextServer.cpp
MACI_INTERFACE_TEXTCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Text/TextClient.cpp
MACI_INTERFACE_TEXT_EXT_CPP:=
MACI_INTERFACE_TEXT_EXT_INCLUDE:=
MACI_INTERFACE_TEXT_EXT_LIBS:=


###############################################################################
# IMU
MACI_INTERFACE_IMU_COMMON_CPP:=$(MACI_INTERFACE_PATH)/IMU/IMUData.cpp
MACI_INTERFACE_IMUSERVER_CPP:=$(MACI_INTERFACE_PATH)/IMU/IMUServer.cpp
MACI_INTERFACE_IMUCLIENT_CPP:=$(MACI_INTERFACE_PATH)/IMU/IMUClient.cpp
MACI_INTERFACE_IMU_EXT_CPP:=
MACI_INTERFACE_IMU_EXT_INCLUDE:=
MACI_INTERFACE_IMU_EXT_LIBS:=


###############################################################################
# Wireless
MACI_INTERFACE_WIRELESS_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Wireless/WirelessData.cpp
MACI_INTERFACE_WIRELESSSERVER_CPP:=$(MACI_INTERFACE_PATH)/Wireless/WirelessServer.cpp
MACI_INTERFACE_WIRELESSCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Wireless/WirelessClient.cpp
MACI_INTERFACE_WIRELESS_EXT_CPP:=
MACI_INTERFACE_WIRELESS_EXT_INCLUDE:=
MACI_INTERFACE_WIRELESS_EXT_LIBS:=


###############################################################################
# Recharger
MACI_INTERFACE_RECHARGER_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Recharger/RechargerData.cpp
MACI_INTERFACE_RECHARGERSERVER_CPP:=$(MACI_INTERFACE_PATH)/Recharger/RechargerServer.cpp
MACI_INTERFACE_RECHARGERCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Recharger/RechargerClient.cpp
MACI_INTERFACE_RECHARGER_EXT_CPP:=
MACI_INTERFACE_RECHARGER_EXT_INCLUDE:=
MACI_INTERFACE_RECHARGER_EXT_LIBS:=

###############################################################################
# Energy
MACI_INTERFACE_ENERGY_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Energy/EnergyData.cpp
MACI_INTERFACE_ENERGYSERVER_CPP:=$(MACI_INTERFACE_PATH)/Energy/EnergyServer.cpp
MACI_INTERFACE_ENERGYCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Energy/EnergyClient.cpp
MACI_INTERFACE_ENERGY_EXT_CPP:=
MACI_INTERFACE_ENERGY_EXT_INCLUDE:=
MACI_INTERFACE_ENERGY_EXT_LIBS:=


###############################################################################
# Environment measurement
MACI_INTERFACE_ENVIRONMENTMEASUREMENT_COMMON_CPP:=$(MACI_INTERFACE_PATH)/EnvironmentMeasurement/EnvironmentMeasurementData.cpp
MACI_INTERFACE_ENVIRONMENTMEASUREMENTSERVER_CPP:=$(MACI_INTERFACE_PATH)/EnvironmentMeasurement/EnvironmentMeasurementServer.cpp
MACI_INTERFACE_ENVIRONMENTMEASUREMENTCLIENT_CPP:=$(MACI_INTERFACE_PATH)/EnvironmentMeasurement/EnvironmentMeasurementClient.cpp
MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_CPP:=$(MACI_EXT_LNMLIB_PATH)/map/TOccupancyGrid.cpp \
$(MACI_EXT_LNMLIB_PATH)/BetB_dt/EnvironmentMeasurement2D.cpp 
MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_INCLUDE:=-I$(MACI_EXT_LNMLIB_PATH)/BetB_dt \
-I$(MACI_EXT_LNMLIB_PATH)/map \
-I$(MACI_EXT_LNMLIB_PATH)/map/dt
MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_LIBS:=


###############################################################################
# Bearing
MACI_INTERFACE_BEARING_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Bearing/BearingData.cpp
MACI_INTERFACE_BEARINGSERVER_CPP:=$(MACI_INTERFACE_PATH)/Bearing/BearingServer.cpp
MACI_INTERFACE_BEARINGCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Bearing/BearingClient.cpp
MACI_INTERFACE_BEARING_EXT_CPP:=
MACI_INTERFACE_BEARING_EXT_INCLUDE:=
MACI_INTERFACE_BEARING_EXT_LIBS:=

###############################################################################
# TaskCtrl
MACI_INTERFACE_TASKCTRL_COMMON_CPP:=$(MACI_INTERFACE_PATH)/TaskCtrl/TaskCtrlData.cpp
MACI_INTERFACE_TASKCTRLSERVER_CPP:=$(MACI_INTERFACE_PATH)/TaskCtrl/TaskCtrlServer.cpp
MACI_INTERFACE_TASKCTRLCLIENT_CPP:=$(MACI_INTERFACE_PATH)/TaskCtrl/TaskCtrlClient.cpp
MACI_INTERFACE_TASKCTRL_EXT_CPP:=
MACI_INTERFACE_TASKCTRL_EXT_INCLUDE:=
MACI_INTERFACE_TASKCTRL_EXT_LIBS:=

###############################################################################
# SQL
MACI_INTERFACE_SQL_COMMON_CPP:=$(MACI_INTERFACE_PATH)/SQL/SQLData.cpp \
$(MACI_INTERFACE_PATH)/SQL/SQLResult.cpp \
$(MACI_INTERFACE_PATH)/SQL/SQLQuery.cpp	
MACI_INTERFACE_SQLSERVER_CPP:=$(MACI_INTERFACE_PATH)/SQL/SQLServer.cpp
MACI_INTERFACE_SQLCLIENT_CPP:=$(MACI_INTERFACE_PATH)/SQL/SQLClient.cpp
MACI_INTERFACE_SQL_EXT_CPP:=
MACI_INTERFACE_SQL_EXT_INCLUDE:=
MACI_INTERFACE_SQL_EXT_LIBS:=

###############################################################################
# Parameter
MACI_INTERFACE_PARAMETER_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Parameter/ParameterData.cpp \
$(MACI_INTERFACE_PATH)/Parameter/ParameterXML.cpp
MACI_INTERFACE_PARAMETERSERVER_CPP:=$(MACI_INTERFACE_PATH)/Parameter/ParameterServer.cpp
MACI_INTERFACE_PARAMETERCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Parameter/ParameterClient.cpp
MACI_INTERFACE_PARAMETER_EXT_CPP:=
MACI_INTERFACE_PARAMETER_EXT_INCLUDE:=
MACI_INTERFACE_PARAMETER_EXT_LIBS:=

###############################################################################
# Audio
MACI_INTERFACE_AUDIO_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Audio/AudioData.cpp \
$(MACI_INTERFACE_PATH)/Audio/AudioContainer.cpp
MACI_INTERFACE_AUDIOSERVER_CPP:=$(MACI_INTERFACE_PATH)/Audio/AudioServer.cpp
MACI_INTERFACE_AUDIOCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Audio/AudioClient.cpp
MACI_INTERFACE_AUDIO_EXT_CPP:=
MACI_INTERFACE_AUDIO_EXT_INCLUDE:=
MACI_INTERFACE_AUDIO_EXT_LIBS:= -lasound


###############################################################################
# EmergencyStop
MACI_INTERFACE_EMERGENCYSTOP_COMMON_CPP:=$(MACI_INTERFACE_PATH)/EmergencyStop/EmergencyStopData.cpp
MACI_INTERFACE_EMERGENCYSTOPSERVER_CPP:=$(MACI_INTERFACE_PATH)/EmergencyStop/EmergencyStopServer.cpp
MACI_INTERFACE_EMERGENCYSTOPCLIENT_CPP:=$(MACI_INTERFACE_PATH)/EmergencyStop/EmergencyStopClient.cpp
MACI_INTERFACE_EMERGENCYSTOP_EXT_CPP:=
MACI_INTERFACE_EMERGENCYSTOP_EXT_INCLUDE:=
MACI_INTERFACE_EMERGENCYSTOP_EXT_LIBS:= 

###############################################################################
# Dummy
MACI_INTERFACE_OBJECTDB_COMMON_CPP:=$(MACI_INTERFACE_PATH)/ObjectDB/ObjectDBData.cpp \
$(MACI_INTERFACE_PATH)/ObjectDB/DBObject.cpp
MACI_INTERFACE_OBJECTDBSERVER_CPP:=$(MACI_INTERFACE_PATH)/ObjectDB/ObjectDBServer.cpp
MACI_INTERFACE_OBJECTDBCLIENT_CPP:=$(MACI_INTERFACE_PATH)/ObjectDB/ObjectDBClient.cpp
MACI_INTERFACE_OBJECTDB_EXT_CPP:=
MACI_INTERFACE_OBJECTDB_EXT_INCLUDE:=
MACI_INTERFACE_OBJECTDB_EXT_LIBS:=

###############################################################################
# Gimbo
MACI_INTERFACE_GIMBO_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Gimbo/GimboData.cpp
MACI_INTERFACE_GIMBOSERVER_CPP:=$(MACI_INTERFACE_PATH)/Gimbo/GimboServer.cpp
MACI_INTERFACE_GIMBOCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Gimbo/GimboClient.cpp
MACI_INTERFACE_GIMBO_EXT_CPP:=$(GDIR)/MaCI/launcher/directory.cpp
MACI_INTERFACE_GIMBO_EXT_INCLUDE:=-I$(GDIR)/MaCI/launcher/
MACI_INTERFACE_GIMBO_EXT_LIBS:=

###############################################################################
# Unit
MACI_INTERFACE_UNIT_COMMON_CPP:=$(MACI_INTERFACE_PATH)/Unit/UnitData.cpp
MACI_INTERFACE_UNITSERVER_CPP:=$(MACI_INTERFACE_PATH)/Unit/UnitServer.cpp
MACI_INTERFACE_UNITCLIENT_CPP:=$(MACI_INTERFACE_PATH)/Unit/UnitClient.cpp
MACI_INTERFACE_UNIT_EXT_CPP:=
MACI_INTERFACE_UNIT_EXT_INCLUDE:=
MACI_INTERFACE_UNIT_EXT_LIBS:=

###############################################################################
# MachineCtrl - Pseudointerface which only maps existing clients.
MACI_INTERFACE_MACHINECTRL_COMMON_CPP:=
MACI_INTERFACE_MACHINECTRLSERVER_CPP:=
MACI_INTERFACE_MACHINECTRLCLIENT_CPP:=$(MACI_INTERFACE_PATH)/MachineCtrl/MachineCtrlClient.cpp \
			       $(MACI_INTERFACE_PATH)/MachineCtrl/FleetCtrlClient.cpp
MACI_INTERFACE_MACHINECTRL_EXT_CPP:=
MACI_INTERFACE_MACHINECTRL_EXT_INCLUDE:=
MACI_INTERFACE_MACHINECTRL_EXT_LIBS:=

###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
# All interfaces in one rule. Please;
# ** DO NOT USE THIS ON ANY BUILD RULE! **
###############################################################################
###############################################################################
MACI_INTERFACE_ALL_CPP:=$(MACI_INTERFACE_RANGING_COMMON_CPP) \
$(MACI_INTERFACE_RANGINGSERVER_CPP) \
$(MACI_INTERFACE_RANGINGCLIENT_CPP) \
$(MACI_INTERFACE_SPEEDCTRL_COMMON_CPP) \
$(MACI_INTERFACE_SPEEDCTRLSERVER_CPP) \
$(MACI_INTERFACE_SPEEDCTRLCLIENT_CPP) \
$(MACI_INTERFACE_POSITION_COMMON_CPP) \
$(MACI_INTERFACE_POSITIONSERVER_CPP) \
$(MACI_INTERFACE_POSITIONCLIENT_CPP) \
$(MACI_INTERFACE_IO_COMMON_CPP) \
$(MACI_INTERFACE_IOSERVER_CPP) \
$(MACI_INTERFACE_IOCLIENT_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVE_COMMON_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVESERVER_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVECLIENT_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRL_COMMON_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRLSERVER_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRLCLIENT_CPP) \
$(MACI_INTERFACE_MAP_COMMON_CPP) \
$(MACI_INTERFACE_MAPSERVER_CPP) \
$(MACI_INTERFACE_MAPCLIENT_CPP) \
$(MACI_INTERFACE_UNIT_COMMON_CPP) \
$(MACI_INTERFACE_UNITSERVER_CPP) \
$(MACI_INTERFACE_UNITCLIENT_CPP) \
$(MACI_INTERFACE_BEHAVIOUR_COMMON_CPP) \
$(MACI_INTERFACE_BEHAVIOURSERVER_CPP) \
$(MACI_INTERFACE_BEHAVIOURCLIENT_CPP) \
$(MACI_INTERFACE_IMAGE_COMMON_CPP) \
$(MACI_INTERFACE_IMAGESERVER_CPP) \
$(MACI_INTERFACE_IMAGECLIENT_CPP) \
$(MACI_INTERFACE_TEXT_COMMON_CPP) \
$(MACI_INTERFACE_TEXTSERVER_CPP) \
$(MACI_INTERFACE_TEXTCLIENT_CPP) \
$(MACI_INTERFACE_IMU_COMMON_CPP) \
$(MACI_INTERFACE_IMUSERVER_CPP) \
$(MACI_INTERFACE_IMUCLIENT_CPP) \
$(MACI_INTERFACE_ALARM_COMMON_CPP) \
$(MACI_INTERFACE_ALARMSERVER_CPP) \
$(MACI_INTERFACE_ALARMCLIENT_CPP) \
$(MACI_INTERFACE_WIRELESS_COMMON_CPP) \
$(MACI_INTERFACE_WIRELESSSERVER_CPP) \
$(MACI_INTERFACE_WIRELESSCLIENT_CPP) \
$(MACI_INTERFACE_RECHARGER_COMMON_CPP) \
$(MACI_INTERFACE_RECHARGERSERVER_CPP) \
$(MACI_INTERFACE_RECHARGERCLIENT_CPP) \
$(MACI_INTERFACE_ENERGY_COMMON_CPP) \
$(MACI_INTERFACE_ENERGYSERVER_CPP) \
$(MACI_INTERFACE_ENERGYCLIENT_CPP) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENT_COMMON_CPP) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENTSERVER_COMMON_CPP) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENTCLIENT_COMMON_CPP) \
$(MACI_INTERFACE_BEARING_COMMON_CPP) \
$(MACI_INTERFACE_BEARINGSERVER_CPP) \
$(MACI_INTERFACE_BEARINGCLIENT_CPP) \
$(MACI_INTERFACE_TASKCTRL_COMMON_CPP) \
$(MACI_INTERFACE_TASKCTRLSERVER_CPP) \
$(MACI_INTERFACE_TASKCTRLCLIENT_CPP) \
$(MACI_INTERFACE_SQL_COMMON_CPP) \
$(MACI_INTERFACE_SQLSERVER_CPP) \
$(MACI_INTERFACE_SQLCLIENT_CPP) \
$(MACI_INTERFACE_PARAMETER_COMMON_CPP) \
$(MACI_INTERFACE_PARAMETERSERVER_CPP) \
$(MACI_INTERFACE_PARAMETERCLIENT_CPP) \
$(MACI_INTERFACE_AUDIO_COMMON_CPP) \
$(MACI_INTERFACE_AUDIOSERVER_CPP) \
$(MACI_INTERFACE_AUDIOCLIENT_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOP_COMMON_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOPSERVER_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOPCLIENT_CPP) \
$(MACI_INTERFACE_MACHINECTRL_COMMON_CPP) \
$(MACI_INTERFACE_MACHINECTRLSERVER_CPP) \
$(MACI_INTERFACE_MACHINECTRLCLIENT_CPP)

###############################################################################

MACI_INTERFACE_ALL_STABLE_CPP:=$(MACI_INTERFACE_RANGING_COMMON_CPP) \
$(MACI_INTERFACE_RANGINGSERVER_CPP) \
$(MACI_INTERFACE_RANGINGCLIENT_CPP) \
$(MACI_INTERFACE_SPEEDCTRL_COMMON_CPP) \
$(MACI_INTERFACE_SPEEDCTRLSERVER_CPP) \
$(MACI_INTERFACE_SPEEDCTRLCLIENT_CPP) \
$(MACI_INTERFACE_POSITION_COMMON_CPP) \
$(MACI_INTERFACE_POSITIONSERVER_CPP) \
$(MACI_INTERFACE_POSITIONCLIENT_CPP) \
$(MACI_INTERFACE_IO_COMMON_CPP) \
$(MACI_INTERFACE_IOSERVER_CPP) \
$(MACI_INTERFACE_IOCLIENT_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVE_COMMON_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVESERVER_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVECLIENT_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRL_COMMON_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRLSERVER_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRLCLIENT_CPP) \
$(MACI_INTERFACE_BEHAVIOUR_COMMON_CPP) \
$(MACI_INTERFACE_BEHAVIOURSERVER_CPP) \
$(MACI_INTERFACE_BEHAVIOURCLIENT_CPP) \
$(MACI_INTERFACE_IMAGE_COMMON_CPP) \
$(MACI_INTERFACE_IMAGESERVER_CPP) \
$(MACI_INTERFACE_IMAGECLIENT_CPP) \
$(MACI_INTERFACE_TEXT_COMMON_CPP) \
$(MACI_INTERFACE_TEXTSERVER_CPP) \
$(MACI_INTERFACE_TEXTCLIENT_CPP) \
$(MACI_INTERFACE_IMU_COMMON_CPP) \
$(MACI_INTERFACE_IMUSERVER_CPP) \
$(MACI_INTERFACE_IMUCLIENT_CPP) \
$(MACI_INTERFACE_ALARM_COMMON_CPP) \
$(MACI_INTERFACE_ALARMSERVER_CPP) \
$(MACI_INTERFACE_ALARMCLIENT_CPP) \
$(MACI_INTERFACE_WIRELESS_COMMON_CPP) \
$(MACI_INTERFACE_WIRELESSSERVER_CPP) \
$(MACI_INTERFACE_WIRELESSCLIENT_CPP) \
$(MACI_INTERFACE_ENERGY_COMMON_CPP) \
$(MACI_INTERFACE_ENERGYSERVER_CPP) \
$(MACI_INTERFACE_ENERGYCLIENT_CPP) \
$(MACI_INTERFACE_SQL_COMMON_CPP) \
$(MACI_INTERFACE_SQLSERVER_CPP) \
$(MACI_INTERFACE_SQLCLIENT_CPP) \
$(MACI_INTERFACE_PARAMETER_COMMON_CPP) \
$(MACI_INTERFACE_PARAMETERSERVER_CPP) \
$(MACI_INTERFACE_PARAMETERCLIENT_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOP_COMMON_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOPSERVER_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOPCLIENT_CPP) \
$(MACI_INTERFACE_MACHINECTRL_COMMON_CPP) \
$(MACI_INTERFACE_MACHINECTRLSERVER_CPP) \
$(MACI_INTERFACE_MACHINECTRLCLIENT_CPP) \
$(MACI_INTERFACE_MAP_COMMON_CPP) \
$(MACI_INTERFACE_MAPSERVER_CPP) \
$(MACI_INTERFACE_MAPCLIENT_CPP) \
$(MACI_INTERFACE_UNIT_COMMON_CPP) \
$(MACI_INTERFACE_UNITSERVER_CPP) \
$(MACI_INTERFACE_UNITCLIENT_CPP)

###############################################################################
###############################################################################
##
# egrep "MACI_INTERFACE_.*_EXT_LIBS" MaCI-interfaces.Makefile | sed 's/:=.*//' | sed 's/MACI/$(MACI/' | sed 's/$/) \\/' 
#
# These are ALL libraries required by the MaCI interfaces. Consider
# using the interface specific library tags instead to avoid creating
# unnecessary dependencies for modules/applications.
MACI_EXT_LIBRARIES:=$(MACI_INTERFACE_DUMMY_EXT_LIBS) \
$(MACI_INTERFACE_RANGING_EXT_LIBS) \
$(MACI_INTERFACE_SPEEDCTRL_EXT_LIBS) \
$(MACI_INTERFACE_POSITION_EXT_LIBS) \
$(MACI_INTERFACE_IMAGE_EXT_LIBS) \
$(MACI_INTERFACE_IO_EXT_LIBS) \
$(MACI_INTERFACE_COORDINATEDRIVE_EXT_LIBS) \
$(MACI_INTERFACE_JOINTGROUPCTRL_EXT_LIBS) \
$(MACI_INTERFACE_MAP_EXT_LIBS) \
$(MACI_INTERFACE_BEHAVIOUR_EXT_LIBS) \
$(MACI_INTERFACE_TEXT_EXT_LIBS) \
$(MACI_INTERFACE_IMU_EXT_LIBS) \
$(MACI_INTERFACE_WIRELESS_EXT_LIBS) \
$(MACI_INTERFACE_AUCTION_EXT_LIBS) \
$(MACI_INTERFACE_RECHARGER_EXT_LIBS) \
$(MACI_INTERFACE_ENERGY_EXT_LIBS) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_LIBS) \
$(MACI_INTERFACE_SQL_EXT_LIBS)\
$(MACI_INTERFACE_PARAMETER_EXT_LIBS) \
$(MACI_INTERFACE_AUDIO_EXT_LIBS) \
$(MACI_INTERFACE_EMERGENCYSTOP_EXT_LIBS) 

###############################################################################


###############################################################################
# For External part include directories.
## 
# egrep "MACI_INTERFACE_.*_EXT_INCLUDE" MaCI-interfaces.Makefile | sed 's/:=.*//' | sed 's/MACI/$(MACI/' | sed 's/$/) \\/'

###############################################################################
MACI_EXT_INCLUDE_PATHS:=-I$(MACI_EXT_UTILS_PATH) \
$(MACI_INTERFACE_DUMMY_EXT_INCLUDE) \
$(MACI_INTERFACE_RANGING_EXT_INCLUDE) \
$(MACI_INTERFACE_SPEEDCTRL_EXT_INCLUDE) \
$(MACI_INTERFACE_POSITION_EXT_INCLUDE) \
$(MACI_INTERFACE_IMAGE_EXT_INCLUDE) \
$(MACI_INTERFACE_IO_EXT_INCLUDE) \
$(MACI_INTERFACE_COORDINATEDRIVE_EXT_INCLUDE) \
$(MACI_INTERFACE_JOINTGROUPCTRL_EXT_INCLUDE) \
$(MACI_INTERFACE_MAP_EXT_INCLUDE) \
$(MACI_INTERFACE_BEHAVIOUR_EXT_INCLUDE) \
$(MACI_INTERFACE_TEXT_EXT_INCLUDE) \
$(MACI_INTERFACE_IMU_EXT_INCLUDE) \
$(MACI_INTERFACE_WIRELESS_EXT_INCLUDE) \
$(MACI_INTERFACE_AUCTION_EXT_INCLUDE) \
$(MACI_INTERFACE_RECHARGER_EXT_INCLUDE) \
$(MACI_INTERFACE_ENERGY_EXT_INCLUDE) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_INCLUDE) \
$(MACI_INTERFACE_TASKCTRL_EXT_INCLUDE) \
$(MACI_INTERFACE_SQL_EXT_INCLUDE) \
$(MACI_INTERFACE_PARAMETER_EXT_INCLUDE) \
$(MACI_INTERFACE_AUDIO_EXT_INCLUDE) \
$(MACI_INTERFACE_EMERGENCYSTOP_EXT_INCLUDE)

###############################################################################
# For all MaCI interface External CPP dependencies. Use of this is not recommended.
##
# egrep "MACI_INTERFACE_.*_EXT_CPP" MaCI-interfaces.Makefile | sed 's/:=.*//' | sed 's/MACI/$(MACI/' | sed 's/$/) \\/'
###############################################################################
MACI_EXT_ALL_CPP:=$(MACI_INTERFACE_DUMMY_EXT_CPP) \
$(MACI_INTERFACE_RANGING_EXT_CPP) \
$(MACI_INTERFACE_SPEEDCTRL_EXT_CPP) \
$(MACI_INTERFACE_POSITION_EXT_CPP) \
$(MACI_INTERFACE_IMAGE_EXT_CPP) \
$(MACI_INTERFACE_IO_EXT_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVE_EXT_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRL_EXT_CPP) \
$(MACI_INTERFACE_MAP_EXT_CPP) \
$(MACI_INTERFACE_BEHAVIOUR_EXT_CPP) \
$(MACI_INTERFACE_TEXT_EXT_CPP) \
$(MACI_INTERFACE_IMU_EXT_CPP) \
$(MACI_INTERFACE_WIRELESS_EXT_CPP) \
$(MACI_INTERFACE_AUCTION_EXT_CPP) \
$(MACI_INTERFACE_RECHARGER_EXT_CPP) \
$(MACI_INTERFACE_ENERGY_EXT_CPP) \
$(MACI_INTERFACE_ENVIRONMENTMEASUREMENT_EXT_CPP) \
$(MACI_INTERFACE_TASKCTRL_EXT_CPP) \
$(MACI_INTERFACE_SQL_EXT_CPP) \
$(MACI_INTERFACE_PARAMETER_EXT_CPP) \
$(MACI_INTERFACE_AUDIO_EXT_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOP_EXT_CPP)
###############################################################################

MACI_EXT_ALL_STABLE_CPP:=$(MACI_INTERFACE_RANGING_EXT_CPP) \
$(MACI_INTERFACE_SPEEDCTRL_EXT_CPP) \
$(MACI_INTERFACE_POSITION_EXT_CPP) \
$(MACI_INTERFACE_IMAGE_EXT_CPP) \
$(MACI_INTERFACE_IO_EXT_CPP) \
$(MACI_INTERFACE_MAP_EXT_CPP) \
$(MACI_INTERFACE_COORDINATEDRIVE_EXT_CPP) \
$(MACI_INTERFACE_JOINTGROUPCTRL_EXT_CPP) \
$(MACI_INTERFACE_BEHAVIOUR_EXT_CPP) \
$(MACI_INTERFACE_TEXT_EXT_CPP) \
$(MACI_INTERFACE_IMU_EXT_CPP) \
$(MACI_INTERFACE_WIRELESS_EXT_CPP) \
$(MACI_INTERFACE_ENERGY_EXT_CPP) \
$(MACI_INTERFACE_SQL_EXT_CPP) \
$(MACI_INTERFACE_PARAMETER_EXT_CPP) \
$(MACI_INTERFACE_EMERGENCYSTOP_EXT_CPP)

###############################################################################
###############################################################################
MACI_EXT_ALL_C:=$(MACI_INTERFACE_MAP_EXT_C)	\
	        $(MACI_INTERFACE_IMAGE_EXT_C)

###############################################################################
# MaCI *INTERFACE* Include paths. Use this when compiling. This needs
# not be split in smaller parts, as extra include paths dont mess
# anything up.
###############################################################################
MACI_INCLUDE_PATHS:=-I$(MACI_INTERFACE_PATH) \
-I$(MACI_INTERFACE_PATH)/MaCICtrl \
-I$(MACI_INTERFACE_PATH)/common \
-I$(MACI_INTERFACE_PATH)/Alarm \
-I$(MACI_INTERFACE_PATH)/Dummy \
-I$(MACI_INTERFACE_PATH)/Ranging \
-I$(MACI_INTERFACE_PATH)/SpeedCtrl \
-I$(MACI_INTERFACE_PATH)/Position \
-I$(MACI_INTERFACE_PATH)/TTS \
-I$(MACI_INTERFACE_PATH)/IO \
-I$(MACI_INTERFACE_PATH)/CoordinateDrive \
-I$(MACI_INTERFACE_PATH)/JointGroupCtrl \
-I$(MACI_INTERFACE_PATH)/Map \
-I$(MACI_INTERFACE_PATH)/Behaviour \
-I$(MACI_INTERFACE_PATH)/Image \
-I$(MACI_INTERFACE_PATH)/Text \
-I$(MACI_INTERFACE_PATH)/IMU \
-I$(MACI_INTERFACE_PATH)/Wireless \
-I$(MACI_INTERFACE_PATH)/Recharger \
-I$(MACI_INTERFACE_PATH)/Energy \
-I$(MACI_INTERFACE_PATH)/EnvironmentMeasurement \
-I$(MACI_INTERFACE_PATH)/Bearing \
-I$(MACI_INTERFACE_PATH)/TaskCtrl \
-I$(MACI_INTERFACE_PATH)/SQL \
-I$(MACI_INTERFACE_PATH)/ObjectDB \
-I$(MACI_INTERFACE_PATH)/Parameter \
-I$(MACI_INTERFACE_PATH)/Audio \
-I$(MACI_INTERFACE_PATH)/EmergencyStop \
-I$(MACI_INTERFACE_PATH)/Gimbo \
-I$(MACI_INTERFACE_PATH)/Unit

#$(MACI_EXT_INCLUDE_PATHS)

###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
